package com.tql.mall.product.client;

import com.tql.mall.common.result.R;
import com.tql.mall.model.product.BaseAttrInfo;
import com.tql.mall.model.product.SkuInfo;
import com.tql.mall.model.product.SpuPoster;
import com.tql.mall.model.product.SpuSaleAttr;
import com.tql.mall.product.client.impl.ProductDegradeFeignClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author: tyk
 * @Date: 2023/5/22 20:26
 * @Description:
 */
@FeignClient(value = "service-product", fallback = ProductDegradeFeignClient.class)
public interface ProductFeignClient {
    /**
     * 根据skuId查询sku信息和图片列表
     */
    @GetMapping("api/product/inner/getSkuInfo{skuId}")
    SkuInfo getSkuInfo(@PathVariable Long skuId);


    /**
     * 根据skuId查询实时价格
     */
    @GetMapping("api/product/inner/getSkuPrice{skuId}")
    BigDecimal getSkuPrice(@PathVariable Long skuId);


    /**
     * 根据skuId和spuId获取销售属性数据
     */
    @GetMapping("api/product/inner/getSpuSaleAttrList{skuId}/{spuId}")
    List<SpuSaleAttr> getSpuSaleAttrList(@PathVariable Long skuId, @PathVariable Long spuId);

    /**
     * 根据spuId获取销售属性值ID与skuId的映射
     */
    @GetMapping("api/product/inner/getSkuValueIdsMap/{spuId}")
    Map<String, Long> getSkuValueIdsMap(@PathVariable Long spuId);

    /**
     * 根据sku查询海报信息
     */
    @GetMapping("api/product/inner/getSpuPosterList/{spuId}")
    List<SpuPoster> getSpuPosterList(@PathVariable Long spuId);

    /**
     * 根据skuId获取平台属性集合
     */
    @GetMapping("api/product/inner/getBaseAttrInfoList/{skuId}")
    List<BaseAttrInfo> getBaseAttrInfoList(@PathVariable Long skuId);


    /*
    * 上传图片到minio
    * */
    @PostMapping("img")
    public R imgUpload(MultipartFile file);
}
